home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 October / Macformat17.cdr / Shareware City / Developers / SC++ 7.0.3 Update / Release Notes / TCL 2.0.3 READ ME < prev    next >
Encoding:
Text File  |  1994-07-11  |  9.3 KB  |  237 lines  |  [ttro/ttxt]

  1. TCL 2.0.3 README
  2. ================
  3. Copyright © 1994 Symantec Corporation. All rights reserved.
  4. June 16, 1994
  5. Font: Geneva 12
  6.  
  7. The list of bugs fixed can be found at the end of this document.
  8.  
  9. For a multitude of useful information about the new TCL 2.0 that did not
  10. make it into the Visual Architect/TCL Guide, please refer to the
  11. "Supplementary Info.π" project in the "THINK Class Library
  12. 2.0:(Supplementary Info)" folder.  The text files that make up this
  13. project include:
  14.  
  15. • a detailed discussion on how to convert existing TCL applications to TCL 2.0.
  16. • an expanded discussion of using the CSaver class.
  17. • descriptions of three classes not documented in the manual:  CEnvirons,
  18.   CFileElement, and CPictGridDirector.
  19. • descriptions not documented in the manual of the AppleEvent-related
  20.   member functions for the following classes:  CApplication, CClipboard,
  21.   CDocument, CSwitchboard, and CWindow.
  22. • documentation on using ResEdit resource templates to initialize CView-derived
  23.   classes from resources.
  24. • documentation on how to use CSaver to open and save CList class lists of objects.
  25.   (new in TCL 2.0.3)
  26.  
  27. To build your old TCL 1.1.3 projects without converting to TCL 2.0, follow these steps:
  28.  
  29. • Shield the THINK Class Library 2.0, Mac #includes, Standard Libraries, and oops
  30.   Libraries Folders.
  31. • Copy the THINK Class Library 1.1.3, Mac #includes, Standard Libraries
  32.   and oops Libraries Folders from the old Development Folder.
  33. • Re-precompile TCLHeaders and TCLHeaders++.
  34.  
  35.  
  36. More On Using new_by_name
  37. -------------------------
  38. If you wish to instantiate classes using new_by_name, you need to
  39. override CApplication::ForceClassReferences and add the following line
  40. for each class:
  41.  
  42. TCL_FORCE_REFERENCE(myClass);
  43.  
  44. If you forget to do this, you will get a failure in new_by_name when
  45. trying to instantiate your class.
  46.  
  47. NOTE:  The override to CApplication::ForceClassReferences and the
  48. necessary calls to TCL_FORCE_REFERENCE are automatically generated for
  49. classes that you define using Visual Architect.
  50.  
  51. Bugs Fixed in 2.0.3
  52. =================
  53. • Chores are now run with an iterator, allowing a chore to add or
  54.   delete other chores from the list.
  55.  
  56. • CPrinter correctly calculates vStrips and hStrips (undoing the TCL
  57.   1.1.3 "fixes" that broke it). Multiple pages now print correctly.
  58.  
  59. • CIntegerText::ConvertToInteger is now public to assist objects who need
  60.   to prevalidate entries prior to dynamically updating.
  61.  
  62. • CDialogText::SetStatic now restores the selectable attribute.
  63.  
  64. • CDialogText::SetStatic now unloads the gopher when there is only one
  65.   candidate in a dialog.
  66.  
  67. • CEnvirons now has a Dispose() function, conditional on TCL_USE_DISPOSE.
  68.  
  69. • doubleClickCmd is now initialized in CPICTGrid constructors.
  70.  
  71. • Parenthesis added to HavePagination() test in CPrinter.
  72.  
  73. • Fixed problem in CDesktop: when a window was selected in a background app,
  74.   it was not properly selected when the app returned to the foreground.
  75.  
  76. • Removed default wildcard event handler from CSwitchboard.
  77.   Wild card handler slowed down testing of system (OSAX) event handlers, as
  78.   TCL threw (harmless but annoying) exception before each system handler was called.
  79.   Documentation change: This means that a specific handler must be installed
  80.   for every event the app will handle.
  81.  
  82. • Destructor added to CDataFile and CResFile so Close() will be called correctly.
  83.   Documentation change: Protected DoClose() function now does the work of close;
  84.   it can be called so that it will never throw an exception, making it more
  85.   suitable to be called from a destructor.
  86.  
  87. • Fixed test in CAppleEventSender::FindProcess() so it returns ok when both
  88.   signature and type match, rather than when either match.
  89.  
  90. • The GrowZone function (actually CApplication::OutOfMemory) no longer throws an
  91.   exception when all else fails. Instead, it returns a zero, causing the Memory
  92.   Manager to fail in the standard way. Also, several cases of the TCL not checking
  93.   the return from memory manager requests have been cleaned up. Note that
  94.   any memory request can fail, e.g., return NULL, even if canFail is not set.
  95.   canFail only controls whether memory reserves can be tapped.
  96.  
  97. • The CStyleText constructor with arguments now correctly calls its own
  98.   MakeMacTE function, rather than CEditText's. Note that if you must override a
  99.   virtual function to properly initialize an object, you must use the default
  100.   constructor (no arguments) and the I-function instead of a constructor
  101.   with arguments. Virtual functions called from constructors are not virtual
  102.   beyond the class of the constructor.
  103.  
  104. • CStream's friend functions for operator << for CString and const char* types
  105.   are now correctly defined. They were broken in 2.0.1.
  106.  
  107. • The obsolete CStack class has been removed from the More Classes folder.
  108.  
  109.  
  110. Bugs Fixed in 2.0.2
  111. =================
  112. • Made definition of AppleEvent in CAppleEventObject::GenericHandler
  113. volatile in order to keep its value in the catch block. 
  114.  
  115. • operator new() now correctly initializes allocated memory to
  116. the value defined by the macro TCL_PRESET_OBJECTS in
  117. TCL #includes.cp.
  118.  
  119. • CFile::ThrowOut() now calls Close() before deleting the file
  120. as it did in 1.1.3.
  121.  
  122. • All references to CPP_TCL except in TCL #includes.cpp removed.
  123.  
  124. • CArray::InsertAtIndex now correctly forces out-of-range indices
  125. into the array and InsertItem now correctly adjusts its argument
  126. index if it is out of range, as documented. Documentation change:
  127. InsertItem takes a long& argument instead of a long.
  128.  
  129. • Overrode SetArrayItem() in CVoidPtrArray and CPtrArray so the
  130. latter now has a type-safe way to change the value of an item.
  131.  
  132. • Dragging windows no longer shows a munged grayrgn after a few
  133. tries.
  134.  
  135. • PutObjectReference() added as a member function of CStream.
  136. The template function didn't use the type T and is obsolete
  137. (though supported until the next major release).
  138. This saves about 100 bytes per streaming root class.
  139.  
  140. • PutObjectReference() no longer incorrectly writes a -1L instead of
  141. a short 0 when an object hasn't already been written.
  142.  
  143. • catch_() no longer destroys the exception before returning a
  144. pointer to it.
  145.  
  146. • CPane's ChangeSize() correctly places the frame when the
  147. top or left is non-zero.
  148.  
  149. • Added HNoPurge to CDLOGDialog::IDLOGDialogX().
  150.  
  151. • FindDlogPosition() checks GetResource.
  152.  
  153. • CStdPopupPane's sMenuProc checks LoadResource.
  154.  
  155. • CDialogDirector::DoModalDialog() calls HiliteMenu(0) in its
  156. exception handler in case exception thrown in Edit menu command.
  157.  
  158. • CDesktop now checks NewPtr().
  159.  
  160. • CClipboard now checks NewHandle(0).
  161.  
  162. • CBartender now calls ResizeHandleCanFail() instead of
  163. SetHandleSize().
  164.  
  165. • CPtrArrayIterators now compile and run correctly. There was a 
  166. problem was an incorrect forward declaration of CPtrArray.
  167.  
  168. • TinyEdit new documents now show blinking cursor.
  169.  
  170. • TCL dependence on '\r' and '\n' removed for PowerPC compatibility.
  171. Added TCL_CR macro defined as 0xD.
  172.  
  173. • It is now possible to compile demos and TCL with TCL_UNSAFE_ALLOCATION
  174. undefined. The TCL no longer crashes after one or two out-of-memory
  175. exceptions. All TCL_AUTO_DESTRUCT_OBJECT allocation in TCL and demos
  176. is now done with TCL_NEW().
  177.  
  178. • Added TCL_FORCE_TEMPLATE_REFERENCE() macro to 
  179. TCLForceReferences.h and fixed bug that made it impossible to use CLists with new_by_name().
  180.  
  181. • __TCL_DebugCStr function restored to Exceptions.cp so BRLib links when
  182. compiled with BR_DEBUG.
  183.  
  184. • CArrayIterator no longer collaborates with CArray, greatly reducing
  185. overhead of creating iterators and making it sensible to use
  186. an iterator inside CCollaborator.
  187.  
  188. • CCollaborator now uses iterators rather than DoForEach loops, allowing
  189. collaborators to go away when they receive broadcasts.
  190.  
  191. Fixed in 2.0.1
  192. ==============
  193. • All references to gLastError removed from TCL.
  194.  
  195. • Made CStream compile with any double size by adding conditional behavior
  196. to PutFloat()/GetFloat() on mc68881 and undocumented __DOUBLE_8__ macros.
  197.  
  198. • Made alignment tests in CException.cp conditional on non-byte alignment.
  199. HOWEVER, TCL still requires at least word alignment or exceptions don't
  200. work.
  201.  
  202. • Variables set in try blocks and used in catch blocks or thereafter have
  203. been made volatile or variable initialization moved out of try blocks
  204. so catch blocks correctly use/delete storage.
  205.  
  206. • Added TCL_ZERO_OBJECTS macro which defines the value to which new objects
  207. are initialized. Default is 0. If TCL_ZERO_OBJECTS is not defined in
  208. TCLHeaders, objects are served raw.
  209.  
  210. • Several catch_all_() blocks were missing throw_same_().
  211.  
  212. • Added try/catch to CWindow::Update and CBartender::UpdateMenus to keep exceptions
  213. from causing display loops and disabling menus.
  214.  
  215. • Exceptions no longer abort when a try/catch block is executed in a catch
  216. block.
  217.  
  218. • CApplication::GrowMemory now frees only enough rainy day memory to satisfy
  219. requests, so non-critical or can-fail allocations can't get into fund.
  220.  
  221. • CApplication::DoIdle() no longer ignores current rainyDay size when trying to
  222. replenish the fund.
  223.  
  224. • Process monitor demo no longer tries to delete list items in a DoForEach loop. Uses an iterator, instead.
  225.  
  226. • Added __MMPrimitiveAllocate global so TCL can sense when an allocation request
  227. is made on behalf of an external memory manager. Prevents "deadlock" caused by
  228. memory manager stealing from rainy day fund.
  229.  
  230. • Several alert and string resources are preloaded to increase likelihood that
  231. out-of-memory warnings are seen when memory is low.
  232.  
  233. • Added Pascal string constructors and other functions to CString.
  234.  
  235. • In CPictureButton, needsUpdate is now initialized.
  236.  
  237.